package com.tbit.main.util;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author LMY
 * @since 2020-12-03 16:27
 * 创建线程池
 */
public class ThreadPoolHelper {

    /**
     * corePoolSize:指定了线程池中的线程数量，它的数量决定了添加的任务是开辟新的线程去执行，还是放到workQueue任务队列中去；
     * maximumPoolSize:指定了线程池中的最大线程数量，这个参数会根据你使用的workQueue任务队列的类型，决定线程池会开辟的最大线程数量；
     * keepAliveTime:当线程池中空闲线程数量超过corePoolSize时，多余的线程会在多长时间内被销毁；
     * unit:keepAliveTime的单位
     */
    private static final ExecutorService executorService = new ThreadPoolExecutor(10, 10, 5,
            TimeUnit.SECONDS, new LinkedBlockingQueue<>(),
            new ThreadPoolExecutor.CallerRunsPolicy());

    /**
     * 提交线程任务
     *
     */
    public static void submit(Runnable runner) {
        if (runner == null) {
            return;
        }
        executorService.execute(runner);
    }


}
